package com.idea.dsl.model;

import lombok.Data;
import lombok.Builder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;

import java.time.LocalDateTime;
import java.util.List;

/**
 * DSL生成响应模型
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DslResponse {
    
    /**
     * 请求ID
     */
    private String requestId;
    
    /**
     * 生成的DSL内容
     */
    private String dslContent;
    
    /**
     * DSL类型
     */
    private String dslType;
    
    /**
     * 使用的模型
     */
    private String model;
    
    /**
     * 生成状态
     */
    private GenerationStatus status;
    
    /**
     * 验证结果
     */
    private ValidationResult validation;
    
    /**
     * 生成时间
     */
    private LocalDateTime generatedAt;
    
    /**
     * 耗时(毫秒)
     */
    private Long duration;
    
    /**
     * 错误信息
     */
    private String errorMessage;
    
    /**
     * 生成状态枚举
     */
    public enum GenerationStatus {
        SUCCESS,
        FAILED,
        PARTIAL,
        VALIDATION_FAILED
    }
    
    /**
     * 验证结果
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class ValidationResult {
        /**
         * 是否验证通过
         */
        private Boolean valid;
        
        /**
         * 验证错误信息
         */
        private List<String> errors;
        
        /**
         * 验证警告信息
         */
        private List<String> warnings;
        
        /**
         * 语法检查结果
         */
        private Boolean syntaxValid;
        
        /**
         * 语义检查结果
         */
        private Boolean semanticValid;
    }
}
